#include <stdio.h>
#include <assert.h>
#include <limits.h>

int saturating_add(int x, int y){
    int add = x + y;
    if ((x > 0) && (y > 0) && (add < x) ){
        return INT_MAX;
    }else if ((x < 0) && (y < 0) && (add > x) ){
        return INT_MIN;
    }else{
        return add;
    }
}


int main(){

    assert(saturating_add(1, INT_MAX) == INT_MAX);
    assert(saturating_add(0, INT_MAX-1) == INT_MAX - 1);
    assert(saturating_add(1, 2) == 3);
    assert(saturating_add(INT_MIN, -10) == INT_MIN);

    return 0;
}
